The present invention is related to digital video, and more particularly to a system and method for entropy code preprocessing.
A video sequence includes a series of images represented by frames. The frames comprise two-dimensional grids of pixels. An exemplary video sequence, such as a video sequence in accordance with ITU-656, includes 30 720×480 pixel frames per second. The foregoing results in a bit rate of approximately 165 Mbps for one video sequence.
Multiple video sequences are transmitted together on a communication medium such as a coaxial cable, using a multiple access scheme. The multiple access scheme can include, for example, frequency division multiple access (FDMA), or time division multiple access (TDMA). In a multiple access scheme each video sequence is associated with a particular channel. As the number of video sequences which are transmitted increases, the bandwidth requirements for the communication medium are further increased.
Accordingly, a number of data compression standards have been promulgated to alleviate bandwidth requirements. One of the most popular standards was developed by the Moving Pictures Experts Group (MPEG), and is known as MPEG. Pursuant to the MPEG standard, each picture is subdivided into regions of 16×16 pixels, each of which are represented by a macroblock. A macroblock stores luminance and chrominance matrices which are mapped to the 16×16 pixels. The macroblocks are grouped into any number of slice groups or slices. The MPEG standard has been subjected to a number of updates and revisions, resulting in numerous versions.
In a version known as MPEG-2, each of the slices contain macroblocks which are all in the same row and contiguous with respect to one another. The foregoing property permits transmission of a bit stream of the macroblocks in raster scan order by transmitting the slices in raster scan order. MPEG-2 also includes syntax indicating where each row in a picture begins. The indication of where each row in a picture begins permits decoding of multiple rows in parallel. Parallel decoding of multiple rows, known as multi-row decoding is especially useful for achieving a decoding rate sufficient for presentation of the video sequence on a video display.
More recent standards, such as the Joint Video Team (JVT) project of ISO-MPEG and ITU-VCEG, known as MPEG AVC or MPEG-4 Part 10, provide much better compression than MPEG-2, in terms of compressed bit rate for a given level of quality. This makes AVC attractive for commercial deployment. However, the AVC standard has a number of properties which make decoding substantially more complicated. For example, the macroblocks forming a slice are not necessarily spatially contiguous. Slice groups can include macroblocks that are throughout the entire picture with macroblocks from other slices groups interspersed therebetween. Additionally, new rows do not necessarily begin in a new slice and an AVC bitstream does not necessarily indicate where each row starts. The foregoing make multi-row decoding difficult.
Additionally, compressed video standards such as MPEG-2 and MPEG AVC include specifications for encoding various syntax elements using either variable length codes or arithmetic coding; these methods are referred to as entropy coding, since they take advantage of the probabilities of the various values that the syntax elements can take on, and they generally produce different numbers of bits to indicate the information that needs to be conveyed. Some of these formats, particularly adaptive arithmetic coding such as CABAC in AVC, adapt the meaning of each transmitted bit according to the sequence of bits previously transmitted in the same slice. That is, the interpretation of each bit is dependent on previous bits. Therefore it is generally not possible to begin decoding from a mid-point of a slice without having already decoded all the previous bits in the same slice. This makes multi-row decoding of streams encoded using CABAC extremely difficult.
Multi-row decoding is valuable for a number of reasons. One major reason is achieving the decoding performance requirements. The video sequence is transmitted at rates that may range from less than 1 Mbps up to 20 Mbps in most applications. However, due to the wide variations in the number of bits associated with each picture and with each macroblock of each picture, the peak decoding rate required for displaying a video sequence in real time can be as high as 750-1000 Mbps.
Accordingly, it would be beneficial if multi-row decoding of compressed video data could be facilitated.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with embodiments of the present invention as set forth in the remainder of the present application.